iT邦幫忙

2023 iThome 鐵人賽

0
自我挑戰組

Django系列 第 30

Day30~Django 漫漫長路-踏上了第三十篇~~

  • 分享至 

  • xImage
  •  

大家好,我是Leo
今天來介紹的是django的應用方式/images/emoticon/emoticon12.gif
OK~~~ Let's go now!!!


前言

終於來到最後一天,逼著自己至少要完成30篇
雖然在第二天忘記po文就中斷
但是還是給自己要完成30篇的目標
很慶幸來到了最後一哩路
就讓我們來一起完成最後一哩路吧/images/emoticon/emoticon01.gif


設計model小巧思

設計model時,要注重資料正規化
何謂資料正規化呢?

  • 將數據結構化、組織化,以便減少數據的冗余性和提高數據的一致性。
  • 正規化的目標是消除數據中的重複信息,並確保數據之間的關係是清晰、一致的。
  • 通常通過將大表拆分成更小的、相關的表來實現。這樣可以減少數據的冗余性,提高數據的查詢效率,並減少數據錯誤的可能性。
  • 通常是按照某種特定的規則,例如確保每個表都只包含一類信息,並且每個表都有一個主鍵(primary key)來唯一標識每條記錄。

通過正規化,可以改善資料庫的結構,使其更容易理解維護和擴展。這樣的設計通常能夠提供更好的性能和更容易的查詢。
但是,正規化也可能會增加查詢的複雜性,因為在進行查詢時可能需要跨越多個表來獲取所需的數據。在進行資料正規化時,需要根據具體的應用場景和需求來平衡資料庫的結構和查詢效率。


設計serializer小巧思

在開發Web應用程式時,我們經常需要處理大量的資料。有時候,我們希望根據特定條件過濾資料,以便提供用戶所需的信息。在Django應用程式中,我們可以使用Django REST Framework提供的serializer來輕鬆實現這一目標。

當我們使用serializer時,我們可以定義不同的參數,來過濾我們的資料。
例如,如果我們有一個包含用戶資料的模型,我們可以使用serializer的filters參數,對特定條件進行資料篩選。

example

  • UserSerializer
from rest_framework import serializers
from myapp.models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'email', 'created_at')
        extra_kwargs = {
            'password': {'write_only': True},  # 隱藏密碼欄位
        }
  • FilteredUserSerializer
class FilteredUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'email', 'created_at')
        extra_kwargs = {
            'password': {'write_only': True},
        }
        filters = {
            'username': serializers.CharField(),  # 根據用戶名進行篩選
            'created_at__gte': serializers.DateTimeField(),  # 篩選創建時間大於等於指定時間的用戶
        }

設計views小巧思

很多情況下我們會自訂義共用套件模組library
或撰寫共用views class function
當這個情況下,我們可以透過views將共用模組套用進去
假設我們有一個redis-cluster集群
我們有一隻新增redis-cluster key的API
我們撰寫了一隻共用function測試redis連線與否
透過這個function 我們可以在新增、修改、刪除都可以使用
這時候判斷我們就需要再views做邏輯控制

另外設計盡量是RESTful風格來撰寫API
什麼是RESTful API?

  • RESTful API的核心概念是資源,每個資源都應該有一個唯一的識別符號(通常是URI)。
  • GET: 獲取資源的信息。
  • POST: 創建新資源。
  • PUT: 更新現有資源。
  • DELETE: 刪除資源。

優勢:

  • 可讀性高: RESTful API的URL和HTTP方法直觀易於理解和閱讀
  • 易於使用: 遵循標準的HTTP方法,不需要額外的協議,易於使用和測試
  • 彈性和擴展性: 可以根據需求靈活設計資源和操作,擴展性強

透過定義清晰的資源和使用標準的HTTP方法,RESTful API提供了一個高效且可擴展的方式,使得不同應用程式和平台之間能夠輕鬆地進行數據交換和集成


最後的最後一哩路幫django複習收個尾
很開心我真的有完成30篇的挑戰
過程一波三折,也是跪著走完最後一哩路
謝謝大家聽我的廢話
當然希望對各位是有幫助的
謝謝各位,我是Leo,有時間精力會再想挑戰不同的議題
或許下次想挑戰的是ML,DL的議題/images/emoticon/emoticon25.gif
By the way 現在只想好好休息阿


上一篇
Day29~Django 漫漫長路-DRF API 匯出 excel文檔
系列文
Django30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言